package com.wordlearning.third.audio;

/**
 * 文本转语音异常类
 * 封装TTS服务可能抛出的各种错误
 */
public class TtsException extends Exception {
    
    // 错误代码
    private final String errorCode;
    
    // HTTP状态码
    private final int statusCode;
    
    /**
     * 构造函数
     * @param message 错误消息
     * @param errorCode 错误代码
     * @param statusCode HTTP状态码
     */
    public TtsException(String message, String errorCode, int statusCode) {
        super(message);
        this.errorCode = errorCode;
        this.statusCode = statusCode;
    }
    
    /**
     * 构造函数
     * @param message 错误消息
     * @param errorCode 错误代码
     * @param statusCode HTTP状态码
     * @param cause 异常原因
     */
    public TtsException(String message, String errorCode, int statusCode, Throwable cause) {
        super(message, cause);
        this.errorCode = errorCode;
        this.statusCode = statusCode;
    }
    
    /**
     * 获取错误代码
     * @return 错误代码
     */
    public String getErrorCode() {
        return errorCode;
    }
    
    /**
     * 获取HTTP状态码
     * @return HTTP状态码
     */
    public int getStatusCode() {
        return statusCode;
    }
    
    /**
     * 创建参数错误异常
     * @param message 错误消息
     * @return TtsException实例
     */
    public static TtsException badRequest(String message) {
        return new TtsException(message, "BAD_REQUEST", 400);
    }
    
    /**
     * 创建服务错误异常
     * @param message 错误消息
     * @return TtsException实例
     */
    public static TtsException serverError(String message) {
        return new TtsException(message, "SERVER_ERROR", 500);
    }
    
    /**
     * 创建服务不可用异常
     * @param message 错误消息
     * @return TtsException实例
     */
    public static TtsException serviceUnavailable(String message) {
        return new TtsException(message, "SERVICE_UNAVAILABLE", 503);
    }
}